package org.dromara.system.service;

import org.dromara.system.domain.WbCandidateList;
import org.dromara.system.domain.vo.WbCandidateListRiskVo;
import org.dromara.system.domain.vo.WbCandidateListVo;
import org.dromara.system.domain.bo.WbCandidateListBo;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import org.dromara.common.mybatis.core.page.PageQuery;

import java.util.Collection;
import java.util.List;

/**
 * 中标候选人详情Service接口
 *
 * @author Lion Li
 * @date 2024-05-27
 */
public interface IWbCandidateListService {
    /**
     * 查询中标候选人详情
     */
    WbCandidateListVo queryById(Long id);
    /**
     * 查询中标候选人详情列表
     */
    TableDataInfo<WbCandidateListVo> queryPageList(WbCandidateListBo bo, PageQuery pageQuery);

    /**
     * 查询中标候选人详情列表
     */
    List<WbCandidateListVo> queryList(WbCandidateListBo bo);

    /**
     * 新增中标候选人详情
     */
    Boolean insertByBo(WbCandidateListBo bo);

    /**
     * 修改中标候选人详情
     */
    Boolean updateByBo(WbCandidateListBo bo);

    /**
     * 校验并批量删除中标候选人详情信息
     */
    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);

    TableDataInfo<WbCandidateListVo> queryByList(String year,String provinceId,Long enterpriseId, PageQuery pageQuery);

    List<WbCandidateListVo> queryList1(WbCandidateListBo wbCandidateListBo1);

    /**
     * 查询分包详情列表
     * @param bo 查询条件
     * @param pageQuery 分页
     * @return 分页数据
     */
    TableDataInfo queryCandidatePageList(WbCandidateListBo bo, PageQuery pageQuery);

    /**
     * merge更新数据
     * @param bo 数据集
     * @return 结果
     */
    Boolean mergeByBo(WbCandidateListBo bo);

    /**
     * 查询所有分包数据中的供应商
     * @param bo 查询条件
     * @return 供应商列表
     */
    List<String> queryAllCandidate(WbCandidateListBo bo);

    List<WbCandidateListRiskVo> queryRiskList(WbCandidateListBo bo);

    void removeByCandidateId(Long candidateId);
}
